package com.enfi.example;

import com.enfi.common.security.annotation.EnableCustomConfig;
import com.enfi.common.security.annotation.EnableRyFeignClients;
import com.enfi.common.swagger.annotation.EnableCustomSwagger2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@EnableCustomConfig
@EnableCustomSwagger2
@EnableRyFeignClients
@SpringBootApplication
@RestController
public class EnfiExampleApplication {

    public static void main(String[] args) {
        SpringApplication.run(EnfiExampleApplication.class, args);
        System.out.println("(♥◠‿◠)ﾉﾞ  中国恩菲example模块启动成功   ლ(´ڡ`ლ)ﾞ");
    }

    @GetMapping("/healthz/liveness")
    public void liveness(HttpServletResponse response) throws IOException {
        boolean isAlive = true;
        /** 根据业务逻辑，请自行添加状态检测代码
         * 1、检查配置项
         *  【重要】：
         *  1、注意此处只需要检查和自己应用相关的配置项、运行参数 （如是否死锁、CPU 是否 * 占用异常、内存是否占用异常、是否存在异常的变量值等） 等是否正常，
         *  2、外部影响（如数据库连接失败、消息队列连接失败等）， 不应用来评判应 用的运行* 状态，否则可能会出现因为外部因素导致应用被平台重启的情况
         *  3、如果暂时不知道如何判断的可以直接返回正常，默认将系统能否正常访问 接口作为* 应用是否运行正常的判断条件
         *
         */
        if (isAlive) {
            response.setStatus(HttpServletResponse.SC_OK);
        } else {
            response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
        }
    }

    @GetMapping("/healthz/readiness")
    public void readiness(HttpServletResponse response) throws IOException {
        boolean isReady = true;
        /** 根据业务逻辑，请自行添加状态检测代码
         *  1、检查配置项
         *  【重要】：
         *  1、注意此处只需要检查和自己应用相关的配置项、运行参数 （如是否死锁、CPU是否用异常、内存是否占用异常、是否存在异常的变量值等）等是否正常，
         *  2、外部影响（如数据库连接失败、消息队列连接失败等）， 不应用来评判应 用的运行状态，否则可能会出现因为外部因素导致应用被平台重启的情况
         *  3、如果暂时不知道如何判断的可以直接返回正常，默认将系统能否正常访问 接口作为应用是否运行正常的判断条件
         *
         */
        if (isReady) {
            response.setStatus(HttpServletResponse.SC_OK);
        } else {
            response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
        }
    }

}
